<?php

namespace Modules\Common\Entities;


use Illuminate\Auth\Authenticatable as BaseAuthenticatable;
use Illuminate\Auth\MustVerifyEmail;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Laravel\Passport\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;

/**
 * App\Entities\Authenticatable
 *
 * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Passport\Client[] $clients
 * @property-read int|null $clients_count
 * @property-read mixed $avatar_url
 * @property-read mixed $business_license_img_url
 * @property-read mixed $cover_url
 * @property-read mixed $created_at
 * @property-read mixed $deed_img_url
 * @property-read mixed $icon_url
 * @property-read mixed $id_card_back_img_url
 * @property-read mixed $id_card_img_url
 * @property-read mixed $image_url
 * @property-read mixed $images_url
 * @property-read mixed $legal_person_id_card_back_img_url
 * @property-read mixed $legal_person_id_card_img_url
 * @property-read mixed $other_proof_img_url
 * @property-read mixed $photo_url
 * @property-read mixed $proof_of_skills_img_url
 * @property-read mixed $related_qualifications_img_url
 * @property-read mixed $updated_at
 * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\Permission\Models\Permission[] $permissions
 * @property-read int|null $permissions_count
 * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\Permission\Models\Role[] $roles
 * @property-read int|null $roles_count
 * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Passport\Token[] $tokens
 * @property-read int|null $tokens_count
 * @method static \Illuminate\Database\Eloquent\Builder|Model createdAtAfter($date)
 * @method static \Illuminate\Database\Eloquent\Builder|Model createdAtBefore($date)
 * @method static \Illuminate\Database\Eloquent\Builder|Model createdAtBetween($start, $end)
 * @method static \Illuminate\Database\Eloquent\Builder|Model createdAtOfDay($data)
 * @method static \Illuminate\Database\Eloquent\Builder|Authenticatable newModelQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|Authenticatable newQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|Authenticatable permission($permissions)
 * @method static \Illuminate\Database\Eloquent\Builder|Authenticatable query()
 * @method static \Illuminate\Database\Eloquent\Builder|Model reviewAtOfDay($data)
 * @method static \Illuminate\Database\Eloquent\Builder|Authenticatable role($roles, $guard = null)
 * @method static \Illuminate\Database\Eloquent\Builder|Model serviceTimeAfter($date)
 * @method static \Illuminate\Database\Eloquent\Builder|Model serviceTimeBefore($date)
 * @method static \Illuminate\Database\Eloquent\Builder|Model serviceTimeBetween($start, $end)
 * @method static \Illuminate\Database\Eloquent\Builder|Model updatedAtAfter($date)
 * @method static \Illuminate\Database\Eloquent\Builder|Model updatedAtBefore($date)
 * @method static \Illuminate\Database\Eloquent\Builder|Model updatedAtBetween($start, $end)
 * @method static \Illuminate\Database\Eloquent\Builder|Model updatedAtOfDay($data)
 * @mixin \Eloquent
 */
class Authenticatable extends Model implements
    AuthenticatableContract,
    AuthorizableContract,
    CanResetPasswordContract {
    use BaseAuthenticatable, Authorizable, CanResetPassword, MustVerifyEmail;
    use HasRoles;
    use HasApiTokens;
}
